#ifndef GY_RECTACTIVEAREA_H
#define GY_RECTACTIVEAREA_H

#include "GY_BasicsGraphicsObject.h"

class GY_CONTROLLIBRARY_EXPORT GY_RectActiveArea : public GY_BasicsGraphicsObject
{
    Q_OBJECT

public:
    explicit Q_INVOKABLE GY_RectActiveArea(const QString &guid, QGraphicsItem *parent = nullptr);
    ~GY_RectActiveArea(){}

private:
    /**
     * @brief initializationPropertyInfo 初始化属性
     */
    void initializationPropertyInfo();
    /**
     * @brief updatePoint 更新点位
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updatePoint(const QString &name, const QVariant &value);
    /**
     * @brief updateEnable 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateEnable(const QString &name, const QVariant &value);
    /**
     * @brief updateEnableSingleTouch 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateEnableSingleTouch(const QString &name, const QVariant &value);
    /**
     * @brief updateCaptureDrag 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateCaptureDrag(const QString &name, const QVariant &value);
    /**
     * @brief updateClipToArea 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateClipToArea(const QString &name, const QVariant &value);
    /**
     * @brief updateCursorRepr 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateCursorRepr(const QString &name, const QVariant &value);
    /**
     * @brief updatePath 重绘
     */
    void updatePath();

public:
    /**
     * @brief evDrag 发生事件
     * @return
     */
    QPointF evDrag();
    /**
     * @brief evMove 发生事件
     * @return
     */
    QPointF evMove();
    /**
     * @brief evPress 发生事件
     * @return
     */
    QPointF evPress();
    /**
     * @brief evRelease 发生事件
     * @return
     */
    QPointF evRelease();
    /**
     * @brief evDblClick 发生事件
     * @return
     */
    QPointF evDblClick();
    /**
     * @brief evExit 发生事件
     * @return
     */
    QPointF evExit();
    /**
     * @brief evEnter 发生事件
     * @return
     */
    QPointF evEnter();

protected:
    /**
     * @brief mouseDoubleClickEvent 双击事件
     * @param event 鼠标事件
     */
//    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;

};

#endif // GY_RECTACTIVEAREA_H



